package pe.edu.upc.dsd.whereeat.service.impl;

import java.util.List;

import javax.jws.WebParam;
import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.upc.dsd.whereeat.base.dao.BaseDAO;
import pe.edu.upc.dsd.whereeat.base.service.impl.BaseServiceImpl;
import pe.edu.upc.dsd.whereeat.dao.UsuarioDAO;
import pe.edu.upc.dsd.whereeat.domain.Usuario;
import pe.edu.upc.dsd.whereeat.service.UsuarioService;

@WebService
@Service
@Transactional
public class UsuarioServiceImpl extends BaseServiceImpl<Usuario, Integer>
		implements UsuarioService {

	@Autowired
	private UsuarioDAO usuarioDAO;

	@Override
	protected BaseDAO<Usuario, Integer> getBaseDAO() {
		// TODO Auto-generated method stub
		return usuarioDAO;
	}

	public void save(@WebParam(name = "nombres") String nombres,
			@WebParam(name = "apellidos") String apellidos,
			@WebParam(name = "constrasena") String constrasena,
			@WebParam(name = "correo") String correo,
			@WebParam(name = "categoria") String optionsCategory) {
		Usuario usu = new Usuario(nombres, apellidos, constrasena, correo,
				optionsCategory);
		try {
			usuarioDAO.save(usu);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void update(Usuario usuario) {
		// TODO Auto-generated method stub
		try {
			getBaseDAO().update(usuario);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void detele(Usuario usuario) {
		// TODO Auto-generated method stub

	}

	public Usuario find(String usuario) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Usuario> findAll() {
		// TODO Auto-generated method stub
		try {
			return usuarioDAO.findAll();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	public void delete(Usuario usuario) {
		// TODO Auto-generated method stub
		try {
			getBaseDAO().delete(usuario);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public Usuario autenticar(String correo, String password) {
		Usuario usu = new Usuario(correo, password);
		try {
			return usuarioDAO.findByCorreoAndPwd(usu);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

}
